[アップデート] Amazon RDS のデータベースプレビュー環境で次期 LTS の MySQL 8.4 を評価出来るようになりました

[アップデート] Amazon RDS のデータベースプレビュー環境で次期 LTS の MySQL 8.4 を評価出来るようになりました

Clock Icon2024.08.02

いわさです。

Amazon RDS のオハイオリージョンにはプレビュー環境という機能があり、各エンジンの先行バージョンを評価することが出来ます。
MySQL 8.0 以降はイノベーションリリースという概念があり、四半期ごとに LTS のパッチとは別で機能追加や削除を含むバージョンがリリースされています。
現状 Amazon RDS の標準リージョンでは LTS のみがサポートされていますが、プレビュー環境ではサポート期限の短いイノベーションリリースを試すことが出来ます。

https://dev.classmethod.jp/articles/mysql-innovation-release-version-8-2-rds-database-preview-environment/

MySQL でいうと 8.1、8.2、8.3 の各イノベーションリリースがこれまでプレビュー環境で利用することが出来ましたが、先日のアップデートで次期 LTS である 8.4 がプレビュー環境で先行リリースされました。(標準リージョンはまだ)

公式のサポートサイクルは以下に記載されており、8.4.x の次のイノベーションリリースは 9.0 で、LTS リリースは 9.7.x の予定です。

https://dev.mysql.com/doc/refman/8.4/en/mysql-releases.html

RDS プレビュー環境では本日時点で 8.4.1 が利用出来るようになっていましたので使ってみました。
標準リージョンでのリリース時にはパッチバージョンも含めて挙動などが変更される可能性があるのでご注意ください。具体例として RDS 公式ドキュメントではパラメタ−グループの内容や TLS ライブラリなどが挙げられています。

プレビュー環境インスタンスの作成し接続してみる

プレビュー環境は RDS ダッシュボードからアクセスが可能です。
本日時点で RDS for MySQL では次のエンジンバージョンが選択可能でした。

46A4AB3C-C1E4-414A-B095-CE3206A62144

本日時点でコミュニティバージョンだと 8.4.2 が 2024 年 7 月 23 日にリリースされていますが、プレビュー環境で利用可能なものは 2024 年 7 月 1 日にリリースされた 8.4.1 です。
8.4.0 は 2024 年 4 月 30 日にリリースされています。

インスタンス作成後にクライアントから接続してみます。

% mysql -h hoge0802mysql.cz8csseyg1xj.us-east-2.rds-preview.amazonaws.com -u admin -p 
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 24
Server version: 8.4.1 Source distribution

Copyright (c) 2000, 2024, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> 

サーバーバージョンを確認することが出来ました。8.4.1 ですね。

LTS 間(8.0.xx から 8.4.xx)の変更点を確認してみる

8.4 の新機能は以下のドキュメントに記載されています。

https://dev.mysql.com/doc/refman/8.4/en/mysql-nutshell.html

MySQL 8.0 から 8.4 への変更点と非推奨・削除された機能をまとめました。

新機能と変更点

  • InnoDB関連のシステム変数のデフォルト値が変更された
  • クローンプラグインのバージョン要件が緩和された
  • WindowsでのサーバープラグインによるSASL ベースのLDAP認証がサポートされた
  • レプリケーション関連のオプションと変数が変更された
  • レプリケーションのGTIDにタグ付けができるようになった
  • マルチスレッドレプリケーションアプライヤーの互換性が向上した
  • レプリケーション用語の下位互換性が向上した
  • グループレプリケーションの機能が強化された
  • FLUSH_PRIVILEGES、OPTIMIZE_LOCAL_TABLE権限が新設された
  • MySQL Enterprise Data Masking and De-Identificationの機能が強化された
  • ヒストグラムの自動更新がサポートされた
  • 証明書検証とLDAP認証の機能が拡張された
  • サーバーの起動/停止ログが改善された
  • SHOW PARSE_TREE文が追加された
  • MySQL Enterprise Thread Poolの機能が向上した
  • PROCESSLIST tableの使用状況を追跡できるようになった
  • 集合演算のためのハッシュテーブル最適化が追加された
  • MySQL Enterprise Firewallの機能が強化された
  • WebAuthn認証がサポートされた
  • キーリングの移行がサポートされた
  • 新しいキーワードが追加された

非推奨機能

  • group_replication_allow_local_lower_version_join変数
  • グループレプリケーションのリカバリメタデータ関連の変数
  • WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS()関数
  • GTID ベースのレプリケーションでのIGNORE_SERVER_IDS
  • バイナリログのトランザクション依存性追跡と MIXED ログ形式
  • expire_logs_days変数
  • データベースグラントでのワイルドカード文字の使用
  • --character-set-client-handshakeサーバーオプション

削除された機能

  • レプリケーション、InnoDB、その他の領域に関連するさまざまなサーバーオプションと変数
  • FLUSH HOSTS文
  • 旧式のレプリケーションSQL構文
  • システム変数にNULLを設定する機能
  • ドル記号で始まる識別子
  • 各種プラグインとそれに関連する機能
  • 脆弱な暗号のサポート
  • INFORMATION_SCHEMA.TABLESPACESテーブル
  • DROP/ALTER TABLESPACEでのENGINE句
  • LOCK TABLES ... WRITEでのLOW_PRIORITY
  • 古いEXPLAIN FORMAT=JSON出力形式
  • FLOAT/DOUBLE列でのAUTO_INCREMENT
  • mysql_ssl_rsa_setup ユーティリティ
  • 非推奨のMySQL権限
  • 旧式のサーバー起動オプションとユーティリティ

その他、サーバー・ステータス変数とオプションも結構変更されているものがあります。
それらについては以下をご確認ください。

https://dev.mysql.com/doc/refman/8.4/en/mysql-nutshell.html

InnoDB 関連のシステム変数のデフォルト値を確認してみる

本日は上記の中から 8.0 と 8.4 で InnoDB 関連のパラメータデフォルト値を比較してみましたので紹介します。
比較対象は標準(東京)リージョンの 8.0.35 です。

7FC27BFD-BF95-4732-AA16-7120BF7CFC24

RDS MySQL 8.4.1(パラメータ抜粋したもの)

mysql> show variables like 'innodb_%';
+------------------------------------------+------------------------+
| Variable_name                            | Value                  |
+------------------------------------------+------------------------+
| innodb_buffer_pool_in_core_file          | OFF                    |
| innodb_buffer_pool_instances             | 1                      |
| innodb_change_buffering                  | none                   |
| innodb_dedicated_server                  | OFF                    |
| innodb_adaptive_hash_index               | OFF                    |
| innodb_doublewrite_files                 | 2                      |
| innodb_doublewrite_pages                 | 128                    |
| innodb_flush_method                      | O_DIRECT               |
| innodb_io_capacity                       | 10000                  |
| innodb_io_capacity_max                   | 20000                  |
| innodb_log_buffer_size                   | 67108864               |
| innodb_numa_interleave                   | ON                     |
| innodb_page_cleaners                     | 1                      |
| innodb_parallel_read_threads             | 4                      |
| innodb_purge_threads                     | 4                      |
| innodb_read_io_threads                   | 4                      |
| innodb_use_fdatasync                     | ON                     |
| temptable_max_ram                        | Not provided           |
| temptable_max_mmap                       | Not provided           |
| temptable_use_mmap                       | Not provided           |
+------------------------------------------+------------------------+

RDS MySQL 8.0.35(パラメータ抜粋したもの)

mysql> show variables like 'innodb_%';
+------------------------------------------+------------------------+
| Variable_name                            | Value                  |
+------------------------------------------+------------------------+
| innodb_buffer_pool_in_core_file          | ON                     |
| innodb_buffer_pool_instances             | 1                      |
| innodb_change_buffering                  | all                    |
| innodb_dedicated_server                  | OFF                    |
| innodb_adaptive_hash_index               | ON                     |
| innodb_doublewrite_files                 | 2                      |
| innodb_doublewrite_pages                 | 32                     |
| innodb_flush_method                      | O_DIRECT               |
| innodb_io_capacity                       | 200                    |
| innodb_io_capacity_max                   | 2000                   |
| innodb_log_buffer_size                   | 8388608                |
| innodb_numa_interleave                   | OFF                    |
| innodb_page_cleaners                     | 1                      |
| innodb_parallel_read_threads             | 4                      |
| innodb_purge_threads                     | 1                      |
| innodb_read_io_threads                   | 4                      |
| innodb_use_fdatasync                     | ON                     |
| temptable_max_ram                        | Not provided           |
| temptable_max_mmap                       | Not provided           |
| temptable_use_mmap                       | Not provided           |
+------------------------------------------+------------------------+

公式ドキュメントと RDS for MySQL 8.0.35 でデフォルト値が異なっているものがありました(fdatasync関係とか)が概ねドキュメントに記載のとおりの差分ですね。

さいごに

本日は Amazon RDS のデータベースプレビュー環境で次期 LTS の MySQL 8.4 を評価出来るようになったので紹介しました。

イノベーションリリースだけ提供されるのかなと思ったら LTS もプレビュー環境で提供されるのですね。今後はプレビュー環境で先行評価するケースも増えてくるかもしれません。

8.4.1 ではなく 8.4.2 以降になる可能性もありますが、いずれアップデートが必要になりますので、もし先行してアプリケーションの RDS for MySQL 8.4 環境での評価が必要な場合は RDS プレビュー環境をお試しください。

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.